package com.mrd.gtimpframe.repository;

import com.mrd.gtimpframe.entity.BizProtocolConfirm;

import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface BizProtocolConfirmMapper {
    int deleteByPrimaryKey(String id);

    int insert(BizProtocolConfirm record);

    int insertSelective(BizProtocolConfirm record);

    BizProtocolConfirm selectByPrimaryKey(String id);

    int updateByPrimaryKeySelective(BizProtocolConfirm record);

    int updateByPrimaryKey(BizProtocolConfirm record);

    int countBySupIdAndStatus(String supId, String status);

    /**
     * 根据主键查询和报关行ID进行查询
     *
     * @param id 确认书ID
     */
    BizProtocolConfirm selectByPrimaryKeyAndSupId(String id, String supId);

    /**
     * 根据主键查询和报关行ID进行查询
     *
     * @param uniteId t_gen_protocol_unite.id
     * @param supId   供应商id
     * @param status  状态
     */
    BizProtocolConfirm selectByUnitIdAndSupId(String uniteId, String supId, String status);

    /**
     * 根据报关行ID查询，并且查询结果包含关联的报价协议
     *
     * @param supId 报关行ID
     */
    List<BizProtocolConfirm> selectBySupId(String supId);

    /**
     * 根据协议ID查询确认信息
     *
     * @param uniteId 协议ID
     */
    List<BizProtocolConfirm> selectByUniteId(String uniteId);

    /**
     * 根据协议ID查询确认信息
     *
     * @param uniteId 协议ID
     */
    BizProtocolConfirm selectByUniteIdAndStatus(String uniteId, String status);

    /**
     * 根据协议ID和状态查询确认信息
     */
    List<BizProtocolConfirm> selectByUniteIdInAndStatusIn(@Param("uids") List<String> uids, @Param("statusList") List<String> status);

    /**
     * 统计数量，通过协议ID以及状态进行统计
     *
     * @param uniteId 协议ID
     * @param status  状态
     */
    int countByUniteIdAndStatus(String uniteId, String status);

    /**
     * 统计数量，通过协议ID以及状态进行统计
     *
     * @param uniteId 协议ID
     * @param status  状态
     */
    int countByUniteIdAndIsNotStatus(String uniteId, String status);
}
